package java流相关;

import java.io.*;
import java.util.Arrays;

/**
 * @author coderFu
 * @create 2022/3/4
 * 文件流：
 * BIO 四大基流
 * 字节流、 InputStream ， OutPutStream
 * 字符流： Reader， Write
 *
 * 读进来： 把文件中的数据流向到程序中，此时文件是源，程序是目标
 * 写出去： 把程序中的数据流向数据流向文件中，此时文件是目标，程序是源
 *
 * 读进来： 从文件、网络、压缩包、或其他数据源到java程序。
 * 写出去: 从java程序到文件、网络、压缩包、或其他输出目标。
 *
 *
 *
 */
public class FileStream {

    public static void main(String[] args) throws IOException {

        // 写入文件中 文件字节输出流
        File target = new File("test.txt");
        OutputStream outputStream = new FileOutputStream(target);
        outputStream.write("hello, world".getBytes(),0,12);
        outputStream.close();

        // 从文件中读进来，文件字节输入流
        InputStream inputStream = new FileInputStream(target);

        // 增加缓冲区，每次读取多少字节
        byte[] buffer = new byte[1024];
        // 确定结束条件,临时存储读取的字节数目
        int len = -1;

        while ((len = inputStream.read(buffer)) != -1){
            // 每次读入一个缓冲区大小，然后输出
            String s = new String(buffer,0,len);
            System.out.println(s);
        }
        inputStream.close();

        File destFile = new File("destFile.txt");
        InputStream inputStream1 = new FileInputStream(target);
        OutputStream outputStream1 = new FileOutputStream(destFile);

        byte[] bytes = new byte[1024];

        int len2 = -1;
        while ((len2 = inputStream1.read(bytes)) != -1){
            // 读到文件中
            outputStream1.write(buffer,0,len2);
            // 直接输出
            String s1 = new String(buffer,0,len2);
            System.out.println(s1);
        }

        inputStream.close();
        outputStream1.close();






    }
}
